package com.example.testapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.Spinner;

import com.example.testapplication.adapter.PlanetListAdapter;
import com.example.testapplication.bean.Planet;

import java.util.ArrayList;

public class ListViewTest extends AppCompatActivity {
    private final static String TAG = "ListViewActivity";
    private ListView lv_planetI;
    private Drawable drawable;
    private ArrayList<Planet> planetList = new ArrayList<>(); // 声明一个行星队列
    private static int[] iconArray = {R.drawable.shuixing, R.drawable.jinxing, R.drawable.diqiu,
            R.drawable.huoxing, R.drawable.muxing, R.drawable.tuxing};
    private static String[] nameArray = {"水星", "金星", "地球", "火星", "木星", "土星"};
    private static String[] descArray = {
            "水星是太阳系八大行星最内侧也是最小的一颗行星，也是离太阳最近的行星",
            "金星是太阳系八大行星之一，排行第二，距离太阳0.725天文单位",
            "地球是太阳系八大行星之一，排行第三，也是太阳系中直径、质量和密度最大的类地行星，距离太阳1.5亿公里",
            "火星是太阳系八大行星之一，排行第四，属于类地行星，直径约为地球的53%",
            "木星是太阳系八大行星中体积最大、自转最快的行星，排行第五。它的质量为太阳的千分之一，但为太阳系中其它七大行星质量总和的2.5倍",
            "土星为太阳系八大行星之一，排行第六，体积仅次于木星"
    };
    private String[] dividerArray = {
            "不显示分隔线(分隔线高度为0)",
            "不显示分隔线(分隔线为null)",
            "只显示内部分隔线(先设置分隔线高度)",
            "只显示内部分隔线(后设置分隔线高度)",
            "显示底部分隔线(高度是wrap_content)",
            "显示底部分隔线(高度是match_parent)",
            "显示顶部分隔线(别瞎折腾了，显示不了)",
            "显示全部分隔线(看我用padding大法)"
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list_view);
        for (int i = 0; i < iconArray.length; i++) {
            planetList.add(new Planet(iconArray[i], nameArray[i], descArray[i]));
        }
        // 构建一个行星队列的列表适配器
        PlanetListAdapter adapter = new PlanetListAdapter(this,planetList);
        // 从布局视图中获取lv_planet 列表视图
        lv_planetI = findViewById(R.id.lv_planetI);
        // 给lv_planet 设置列表适配器
        lv_planetI.setAdapter(adapter);
        // 给lv_planet 设置点击事件
        lv_planetI.setOnItemClickListener(adapter);
        lv_planetI.setOnItemLongClickListener(adapter);
        // 从资源文件中获取分割线的图形对象
        drawable = getResources().getDrawable(R.drawable.divider_red2);
        // 初始化分割线下拉框
        initDividerSpinner();
    }

    private void initDividerSpinner() {
        ArrayAdapter<String> dividerAdapter = new ArrayAdapter<String>(this,R.layout.item_select,dividerArray);
        Spinner sp_list = findViewById(R.id.sp_list);
        sp_list.setPrompt("请选择分隔线显示方式");
        sp_list.setAdapter(dividerAdapter);
        sp_list.setOnItemSelectedListener(new DividerSeletedListener());
        sp_list.setSelection(0);
    }

    private class DividerSeletedListener implements android.widget.AdapterView.OnItemSelectedListener {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            int dividerHeight = 5;
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT
            );
            lv_planetI.setDivider(drawable);
            lv_planetI.setDividerHeight(dividerHeight);  // 设置lv_planet的分隔线高度
            lv_planetI.setPadding(0, 0, 0, 0);  // 设置lv_planet的四周空白
            lv_planetI.setBackgroundColor(Color.TRANSPARENT);  // 设置lv_planet的背景颜色
            if (i == 0) {  // 不显示分隔线(分隔线高度为0)
                lv_planetI.setDividerHeight(0);
            } else if (i == 1) {  // 不显示分隔线(分隔线为null)
                lv_planetI.setDivider(null);
                lv_planetI.setDividerHeight(dividerHeight);
            } else if (i == 2) {  // 只显示内部分隔线(先设置分隔线高度)
                lv_planetI.setDividerHeight(dividerHeight);
                lv_planetI.setDivider(drawable);
            } else if (i == 3) {  // 只显示内部分隔线(后设置分隔线高度)
                lv_planetI.setDivider(drawable);
                lv_planetI.setDividerHeight(dividerHeight);
            } else if (i == 4) {  // 显示底部分隔线(高度是wrap_content)
                lv_planetI.setFooterDividersEnabled(true);
            } else if (i == 5) {  // 显示底部分隔线(高度是match_parent)
                params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 0, 1);
                lv_planetI.setFooterDividersEnabled(true);
            } else if (i == 6) {  // 显示顶部分隔线(别瞎折腾了，显示不了)
                params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 0, 1);
                lv_planetI.setFooterDividersEnabled(true);
                lv_planetI.setHeaderDividersEnabled(true);
            } else if (i == 7) {  // 显示全部分隔线(看我用padding大法)
                lv_planetI.setDivider(null);
                lv_planetI.setDividerHeight(dividerHeight);
                lv_planetI.setPadding(0, dividerHeight, 0, dividerHeight);
                lv_planetI.setBackground(drawable);
            }
            lv_planetI.setLayoutParams(params);  // 设置lv_planet的布局参数


        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    }
}